home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1999 March / EnigmA AMIGA RUN 35 (1999)(G.R. Edizioni)(IT)[!][issue 1999-03].iso / earcd / devel / vbcc-68k-src / machines / amiga68k / libsrc / time / mktime.c < prev    next >
C/C++ Source or Header  |  1999-01-01  |  741b  |  33 lines

  1. #include <time.h>
  2.  
  3. static char monthtable[]=
  4. { 31,29,31,30,31,30,31,31,30,31,30 };
  5.  
  6. time_t mktime(struct tm *t)
  7. {
  8.   time_t tim,year;
  9.   int leapyear=0,i;
  10.   year=t->tm_year+1899; /* years from year 1 */
  11.   tim=year/400*146097;
  12.   year%=400;
  13.   if(year==399)
  14.     leapyear++;
  15.   tim+=year/100*36524;
  16.   year%=100;
  17.   if(year==99)
  18.     leapyear--;
  19.   tim+=year/4*1461;
  20.   year%=4;
  21.   if(year==3)
  22.     leapyear++;
  23.   tim+=year*365-719162+t->tm_mday;
  24.   for(i=0;i<t->tm_mon;i++)
  25.     tim+=monthtable[i];
  26.   if(!leapyear&&t->tm_mon>1) /* Sub 1 if no leap year */
  27.     tim--; /* tim contains now the number of days since 1.1.1970 */
  28.   tim=((tim*24+t->tm_hour)*60+t->tm_min)*60+t->tm_sec;
  29.   return tim;
  30. }
  31.  
  32. /* See gmtime.c for more details on the magic numbers :-) */
  33.